From 33e54e45bee92bb6f0da4af9edd4b2e3515f6a2f Mon Sep 17 00:00:00 2001 From: Cosimo Cecchi Date: Wed, 8 Feb 2012 16:35:57 -0500 Subject: [PATCH] color-swatch: add a color-light/color-dark style class for intensity Themes might want to set different colors on the badge if the displayed color is light or dark. Use a style class for this when we set a color on the swatch. --- gtk/gtkcolorswatch.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/gtk/gtkcolorswatch.c b/gtk/gtkcolorswatch.c index 8e4b38deba..d994729e90 100644 --- a/gtk/gtkcolorswatch.c +++ b/gtk/gtkcolorswatch.c @@ -612,15 +612,31 @@ void gtk_color_swatch_set_rgba (GtkColorSwatch *swatch, const GdkRGBA *color) { + GtkStyleContext *context; + + context = gtk_widget_get_style_context (GTK_WIDGET (swatch)); + if (!swatch->priv->has_color) - gtk_drag_source_set (GTK_WIDGET (swatch), - GDK_BUTTON1_MASK | GDK_BUTTON3_MASK, - dnd_targets, G_N_ELEMENTS (dnd_targets), - GDK_ACTION_COPY | GDK_ACTION_MOVE); + { + gtk_drag_source_set (GTK_WIDGET (swatch), + GDK_BUTTON1_MASK | GDK_BUTTON3_MASK, + dnd_targets, G_N_ELEMENTS (dnd_targets), + GDK_ACTION_COPY | GDK_ACTION_MOVE); + } + else + { + gtk_style_context_remove_class (context, "color-light"); + gtk_style_context_remove_class (context, "color-dark"); + } swatch->priv->has_color = TRUE; swatch->priv->color = *color; + if (INTENSITY (swatch->priv->color.red, swatch->priv->color.green, swatch->priv->color.blue) > 0.5) + gtk_style_context_add_class (context, "color-light"); + else + gtk_style_context_add_class (context, "color-dark"); + gtk_widget_queue_draw (GTK_WIDGET (swatch)); g_object_notify (G_OBJECT (swatch), "rgba"); } -- 2.30.2